package docmanager.operation.roles;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import docmanager.business.objects.Rol;
import docmanager.db.ConnectionPool;

import bf.DataAccess;
import bf.operation.Operation;
import bf.operation.OperationException;
import bf.utils.Util;

public class OpModificarRol2 extends Operation {

	@Override
	public Map execute(HttpServletRequest request) throws OperationException {
		Map m = new HashMap();
        int id = Integer.parseInt(request.getParameter("id"));
        String nombre = request.getParameter("nombre");
        boolean controlCompleto = false;
        if ("1".equals(request.getParameter("controlCompleto")))
        {
        	controlCompleto = true;
        }
        String[] operacion = request.getParameterValues("operacion");
        int[] operaciones = null;
        if (operacion != null)
        	operaciones = Util.toIntArray(operacion);
        
        try {
			Connection conn = ConnectionPool.getConnection();
			conn.setAutoCommit(false);
			// Primero, modificamos el nombre del rol y el complete control.
			Rol r = new Rol(conn,id, nombre,controlCompleto);
			r.modificar();
			// Segundo, eliminamos las viejas operaciones.
			String query = "DELETE FROM operaciones_roles WHERE id_rol =" + id;
			DataAccess.dmlQueryStatic(conn, query);
			// Tercero, insertamos las nuevas operaciones.
			if (operaciones != null)
			{
				int id_rol = r.getId();
				for (int i = 0; i < operaciones.length; i++)
				{
					query = "INSERT INTO operaciones_roles(id_rol,id_operacion) "
							+ "values(" + id_rol + "," + operaciones[i] + ")";
					DataAccess.dmlQueryStatic(conn, query);
				}
			}
			conn.commit();
			conn.setAutoCommit(true);
			ConnectionPool.closeConn(conn);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new OperationException();
		}

        
        
		m.put("mensaje", "Rol modificado con exito");
		// TODO Auto-generated method stub
		return m;
	}

	@Override
	public String getReturnURL() {
		// TODO Auto-generated method stub
		return "Main.jsp";
	}

}
